package cn.edu.scau.cmi.ema.dao;

import cn.edu.scau.cmi.ema.base.CmiPagination;
import cn.edu.scau.cmi.ema.domain.Address;
import org.springframework.dao.DataAccessException;

import java.math.BigDecimal;
import java.util.Set;

public interface AddressDAO extends JpaDao<Address> {

	public Address findAddressById(Integer id) throws DataAccessException;

	public Address findAddressById(Integer id, int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddressByName(String name) throws DataAccessException;

	public Set<Address> findAddressByName(String name, int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddressByNameContaining(String name_1) throws DataAccessException;

	public Set<Address> findAddressByNameContaining(String name_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByLongitude(BigDecimal longitude) throws DataAccessException;

	public Set<Address> findAddressByLongitude(BigDecimal longitude, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByLatitude(BigDecimal latitude) throws DataAccessException;

	public Set<Address> findAddressByLatitude(BigDecimal latitude, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByRegionalcode(String regionalcode) throws DataAccessException;

	public Set<Address> findAddressByRegionalcode(String regionalcode, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByRegionalcodeContaining(String regionalcode_1) throws DataAccessException;

	public Set<Address> findAddressByRegionalcodeContaining(String regionalcode_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByPostcode(String postcode) throws DataAccessException;

	public Set<Address> findAddressByPostcode(String postcode, int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddressByPostcodeContaining(String postcode_1) throws DataAccessException;

	public Set<Address> findAddressByPostcodeContaining(String postcode_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByLevel(Integer level) throws DataAccessException;

	public Set<Address> findAddressByLevel(Integer level, int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddressByDescription(String description) throws DataAccessException;

	public Set<Address> findAddressByDescription(String description, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddressByDescriptionContaining(String description_1) throws DataAccessException;

	public Set<Address> findAddressByDescriptionContaining(String description_1, int startResult, int maxRows)
			throws DataAccessException;

	public Address findAddressByPrimaryKey(Integer id) throws DataAccessException;

	public Address findAddressByPrimaryKey(Integer id, int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddresssByIds(Set<Integer> ids) throws DataAccessException;

	public Set<Address> findAllAddresss() throws DataAccessException;

	public Set<Address> findAllAddresss(int startResult, int maxRows) throws DataAccessException;

	public Set<Address> findAddresssByParent(Integer addressId, int start, int max);

	public Set<Address> findAddressByCompositeProperities(String sql, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Address> findAddresssByDetachedCriteria(CmiPagination page) throws DataAccessException;

	public Set<Integer> findAddressIdsByParent(int rootAddressId) throws DataAccessException;

	public Address findAddressByPhysicalPrimaryKey(String name, Integer parentId) throws DataAccessException;

	public Address findAddressByPhysicalPrimaryKey(String name, Integer parentId, int startResult, int maxRows)
			throws DataAccessException;
}
